String vs Array concat

JavaScript performance comparison

Revision 2 of this test case created by and last updated

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  var precompiled = 'apple';
  while (precompiled.length < 100) {
    var offs = precompiled.length - 5;
    for (var i = offs; i < offs + 10; ++i) {
      // calling charAt(i) on `precompiled` will
      // flatten the string in most engines
      precompiled += precompiled.charAt(i);
    }
  }

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in archive.org_bot 0.0.0 / Other 0.0.0
Test Ops/sec
String
var dest = 'apple';
while (dest.length < 100) {
  var offs = dest.length - 5;
  for (var i = offs; i < offs + 10; i++) {
    dest += dest.charAt(i);
  }
}
pending…
String w/o flattening
var dest = 'apple';
while (dest.length < 100) {
  var offs = dest.length - 5;
  for (var i = offs; i < offs + 10; i++) {
    dest += precompiled.charAt(i);
  }
}
pending…
String w/o flattening by index (IE > 7)
var dest = 'apple';
while (dest.length < 100) {
  var offs = dest.length - 5;
  for (var i = offs; i < offs + 10; i++) {
    dest += precompiled[i];
  }
}
pending…
Array
var dest = ['a', 'p', 'p', 'l', 'e'];
while (dest.length < 100) {
  var offs = dest.length - 5;
  for (var i = offs; i < offs + 10; i++) {
    dest[dest.length] = dest[i];
  }
}
dest = dest.join('');
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL.

0 Comments